package com.zn.opit.miniodemo.service;

import com.zn.opit.miniodemo.domain.minio.MinioOperationResult;
import com.zn.opit.miniodemo.domain.minio.MinioUploadInfo;
import com.zn.opit.miniodemo.domain.param.GetMinioUploadInfoParam;
import com.zn.opit.miniodemo.domain.param.MergeMinioMultipartParam;

import java.util.List;

public interface FileUploadService {

    /**
     * 获取分片上传信息
     *
     * @param param 参数
     * @return Minio上传信息
     */
    MinioUploadInfo getUploadId(GetMinioUploadInfoParam param);

    /**
     * 检查文件是否存在
     *
     * @param md5 md5
     * @return true存在 false不存在
     */
    MinioOperationResult checkFileExistsByMd5(String md5);

    /**
     * 查询已上传的分片序号
     *
     * @param objectName 文件名
     * @param uploadId   uploadId
     * @return 已上传的分片序号列表
     */
    List<Integer> listUploadParts(String objectName, String uploadId);

    /**
     * 分片合并
     *
     * @param param 参数
     * @return url
     */
    String mergeMultipartUpload(MergeMinioMultipartParam param);
}
